/*
 * @Description:
 * @Author: william
 * @Date: 2024-05-20 19:06:15
 * @LastEditors: william
 * @LastEditTime: 2025-03-11 16:50:04
 */
import { createI18n } from 'vue-i18n'
import qs from 'qs'
import { getCookieLang } from '@/utils/cookies'
import enLocale from './en'
import zhLocale from './zh'

const messages = {
  zh: {
    ...zhLocale
  },
  en: {
    ...enLocale
  }
}

export function getLanguage() {
  /**
   * 优先级：
   * 1. 先看地址栏参数中有没有；
   * 2. 再看localstorage或cookie中有没有；
   * 3. 然后再通过navigator.language获取浏览器默认语言，看是否是你的应用所支持的语言，若是，则采用之；
   * 4. 最后才是使用回退语言（例如，比较通用的英语、中文）。
   */
  let lang =
    qs.parse(window.location.href.split('?')[1]).language ||
    getCookieLang() ||
    (navigator.language || navigator.browserLanguage).toLowerCase()
  lang = Object.keys(messages).includes(lang) ? lang : 'zh'
  return lang
}

const i18n = createI18n({
  legacy: false,
  locale: getLanguage(),
  fallbackLocale: 'zh',
  messages,
  globalInjection: true
})

export const g_t = i18n.global.t

export default i18n
